import java.util.*;

/**
 * @author LKQ
 * @date 2022/4/11 16:12
 * @description 这样理解，定义 m - a的差值，差值小的为老实人，差值大的为装逼人
 * 如【5，5】 【5，7】 前者只需要5，它就叫5，很实诚，后者要5，但是它叫7才能给，那么我们只能让老实人排在前面，
 * 一步一步垒起足够的值让后面的装逼人有逼可装！
 */
public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        int[][] tasks = {{1,3}, {2, 4}, {10, 11}, {10, 12}, {8, 9}};
        solution.minimumEffort(tasks);
    }

    public int minimumEffort(int[][] tasks) {
        // 按差值排序
        Arrays.sort(tasks, (a, b) -> (b[1] - b[0]) - (a[1] - a[0]));
        int p = 0;
        int sum = 0;
        for (int[] task: tasks) {
            p = Math.max(p, sum + task[1]);
            sum += task[0];
        }
        return p;
    }
}
